Many computer systems have been designed with a bus architecture. These computer systems typically have a processing component coupled to a bus. Other system components are also typically coupled to the bus. Such other components include display components like VGA and video memory, input/output (I/O) components, system memory and storage devices, and other devices accessible to the processing component via the bus. One such computer system is the IBM Personal Computer (PC) manufactured by the IBM Corporation of Armonk, N.Y.
In order to display information to a user of a computer system, the computer system must generate a video image and display the image on a display device. A typical means for generating a displayable image is to create a bitmap of the image in video memory. A bitmap is an array of one bit memory elements that correspond to the array of picture elements (pixels) on a typical video screen. Methods for manipulating bitmaps to create video images is a technique well known in the art.
In prior art computer systems with a processing component and a display component coupled to a bus, the processing component typically carries most of the burden in creating the bitmaps to be displayed by the display component. In addition to creating bitmaps, the processing component must transfer the bitmaps from the processing component over a relatively slow bus to the video memory and back. Therefore, bus speed becomes a critical factor in determining the performance of a particular application running on the computer system. Other factors that influence the performance in these computer systems include (1) processing component speed, (2) data bus width, and (3) time to transfer data from the display component (VGA) to video memory and back.
Several prior art methods exist for improving the performance of video graphics applications in bus-oriented computer systems. These methods include (1) creating special hardware to offload from the processing component the task of updating video memory and creating and transferring bitmaps, (2) using dual-ported video dynamic random access memory (DRAM) instead of single-ported DRAM to implement the video memory, and (3) using single-ported DRAM to implement video memory, but using video data buffers inside the display component and more complicated arbitration schemes to provide more frequent video memory access to the processing component. Each of these prior art methods are described below.
Regarding the first method of using special video hardware, most of the graphic coprocessors fall into this category. In these systems, the processing component merely writes a command word into the graphics coprocessor which in turn, manipulates the video memory to generate the video image as instructed by the processing component. These systems, however are more expensive to implement, since additional components (i.e. graphic coprocessor and support hardware) are required. Another disadvantage of this method is that extensive software drivers have to be written in order for the existing software to run on machines equipped with such coprocessors. Moreover, use of a coprocessor may render the computer system incompatible with existing components.
The second prior art method of using dual-ported DRAM is also a more expensive option. In these systems, the display component is coupled to one port of the video memory while the processing component is coupled to the second memory port. The number of processing component accesses to video memory is thereby increased. Other than higher cost, this method suffers from the disadvantage of the need for additional logic to reformat the output data.
The third prior art method for improving the performance of video graphics applications is to use video data buffers inside the display component and more complicated arbitration schemes to provide more frequent video memory access to the processing component. In this manner, less expensive single-ported DRAM may be used for video memory. The overall performance of this method is still limited by the bus timing bandwidth for a particular computer system. No significant performance increase may therefore be achieved by this method.
Thus, a better means for communication between a processing component, a display component, and video memory is needed to shorten video memory and I/O access time and thus diminish or eliminate the bus contention.